#include "main.h"
//***********************************************页面******************************************************************
////初始化页面
void head_print1(int n)
{
	system("clear");printf("\033[0m");
	printf("************************\033[1;32mWeChat 0.0\033[0m************************\n");
	printf("**\t\t\t\t\t\t\t**\n");
	printf("**\t\t\t");
	if(n==1)printf("\033[1;32m");
	printf("<1>:  登陆\033[0m\t\t\t**\n");
	printf("**\t\t\t");
	if(n==2)printf("\033[1;32m");
	printf("<2>:  注册\033[0m\t\t\t**\n");
	printf("**\t\t\t<3>:  退出\t\t\t**\n");
	printf("**\t\t\t\t\t\t\t**\n");
	printf("**\t\t\t\t\t\t\t**\n");
	printf("**    请按键选择，回车确认\t\t\t\t**\n");
	printf("**********************************************************\n");
}
////主页面
/*
void head_print2(struct user*)
{
	system("clear");printf("\033[0m");
	printf("************************\033[1;32mWeChat 0.0\033[0m************************\n");
	printf("**\t\t\t\t\t\t\t**\n");
	printf("**\t\t\t");
	if(n==1)printf("\033[1;32m");
	printf("<1>:  登陆\033[0m\t\t\t**\n");
	printf("**\t\t\t");
	if(n==2)printf("\033[1;32m");
	printf("<2>:  注册\033[0m\t\t\t**\n");
	printf("**\t\t\t<3>:  退出\t\t\t**\n");
	printf("**\t\t\t\t\t\t\t**\n");
	printf("**\t\t\t\t\t\t\t**\n");
	printf("**    请按键选择，回车确认\t\t\t\t**\n");
	printf("**********************************************************\n");
}
*/
//
//
//***********************************************登陆****************************************************************
extern void head_print1(int);
void login(struct user* userID,int C,struct sockaddr_in addr)
{
	struct client_login_data test_login_data={0};
	int n=0,server_ret=1;
	while(1)
	{
		//1、创建套接字
		if((C=socket(AF_INET,SOCK_STREAM,0))==-1){perror("创建客户端套接字失败");break;}
		head_print1(0);
		//***********************************下一循环提示信息********************************
		if(server_ret==1)//内部错误
		{
			if(n==1){printf("暂无<%d>选项！！！\n请重新输入:",test_login_data.type);n=0;}
		}
		else//服务器返回错误值
		{
			if(test_login_data.type==1)
				if(server_ret==-4)printf("登陆失败,服务器开小差\n");
			else if(test_login_data.type==2)
				if(server_ret==-2||server_ret==-1)printf("注册失败,服务器开小差\n");
			if(server_ret==-5)printf("连接失败,服务器开小差\n");
			server_ret=1;
			test_login_data.type=0;
		}
		//*********************************************************************************
		//
		//***********************************初始状态***************************************
		printf("请输入选项:");
		scanf("%d",&test_login_data.type);
		while(getchar()!=10);
		if(test_login_data.type==1||test_login_data.type==2)
		{
			head_print1(test_login_data.type);
			printf("请输入账号:");
			scanf("%20s",test_login_data.userID.name);while(getchar()!=10);
			printf("请输入密码:");
			scanf("%20s",test_login_data.userID.password);while(getchar()!=10);
			server_ret=(connect(C,(struct sockaddr*)&addr,sizeof(addr)));
			if(server_ret==-1){server_ret=-5;goto top;}
			write(C,&test_login_data,sizeof(test_login_data));
			printf("发送完成阻塞等待反馈\n");
			read(C,&server_ret,4);
			printf("服务器返回值:%d\n",server_ret);
			if(test_login_data.type==1)
			{
				if(server_ret==0)
				{
					memcpy(userID,&test_login_data.userID,sizeof(struct user));
					break;
				}
				if(server_ret==-1)printf("该账号不存在\n");
				if(server_ret==-2)printf("密码错误\n");
				if(server_ret==-3)printf("该账号已登陆\n");
			}
			else if(test_login_data.type==2)
			{
				if(server_ret==0)printf("注册成功\n");
				if(server_ret==-1)printf("账号已存在\n");
			}
			printf("任意键回车确认...");fflush(stdout);
			getchar();
			while(getchar()!=10);
		}
		else if(test_login_data.type==3)
		{
			//结束读线程
			//****
			//结束主线程
			exit(0);
		}
		else
			n=1;
		top:
		close(C);
	}
}

//************************************************用户数据同步***************************************************************
void update_contact(int C,struct tcp_data*from_data,struct contact_link*P)
{
	// 1001:同步起点  1002：同步终点
	//、、、


}

//************************************************接收单人聊天信息***************************************************************
void data_solo(int C,struct tcp_data*from_data)
{
	read(C,&from_data->name,from_data->size+8);
	fprintf(stdout,"<%s>->>:\n\t%s。\n",from_data->name,from_data->buf);
	
}
















